package Classes.GameUtils
{
	import flash.display.DisplayObject;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.TextField;
	
	/**
	 * tooltip显示对象基类
	 * @author 翼翔天外
	 * 
	 */
	public class BaseTipSprite extends Sprite
	{		
		/**
		 * 显示用数据 
		 */
		private var _data:*;
		
		private var _minWidth:int 		= 50;
		private var _minHeight:int 	= 30;
		private var _marginWidth:int 	= 5;
		private var _marginHeight:int 	= 5;
		
		/**
		 * 
		 * @param data		传入的数据
		 * @param delayInit	是否延迟初始化ui（延迟初始化可减少性能消耗,有些UI可能不能延迟初始化）
		 * 
		 */
		public function BaseTipSprite(data:*,delayInit:Boolean = true)
		{
			_data = data;
			if(delayInit)
			{
				//添加时才构建，防止tooltip太多而卡住
				addEventListener(Event.ADDED, onAdded);
			}
			else
			{
				buildUI(_data);
			}
		}
		
		/**
		 * 添加时初始化 
		 * @param e
		 * 
		 */
		private function onAdded(e:Event):void
		{
			removeEventListener(Event.ADDED, onAdded);
			buildUI(_data);
		}
		
		/**
		 * 构建内部显示元素
		 * 添加后直接addChild到内部
		 * 
		 * 子类需重写 
		 *
		 * @param data 传入的数据对象
		 * 
		 */
		protected function buildUI(data:*):void
		{
			
		}
		
		/**
		 * 在热感加好了之后，重新设置文本 
		 * 子类需重写 
		 */		
		public function setTextFieldTxt(txt:String):void
		{
			
		}
		
		/**
		 *在热感加好之后，重设置标题 
		 * 子类需重写
		 * @param txt
		 * 
		 */
		public function setTitleText(txt:String):void
		{
			
		}
		/**
		 * 获取皮肤类
		 * 
		 * 子类需重写
		 * 
		 */
		public function get skinClass():Class
		{
			return null;
		}
		
		/**
		 * ui的总体宽度 （用于测量）
		 */
		public function get uiWidth():Number
		{
			return width;
		}
		
		/**
		 * ui的总体高度 （用于测量）
		 */
		public function get uiHeight():Number
		{
			return height;
		}	

		/**
		 * ToolTip的最小宽度
		 */
		public function get minWidth():int
		{
			return ToolTip_Sprite.DEFAULT_MIN_WIDTH;
		}
		/**
		 * ToolTip的最小高度
		 */
		public function get minHeight():int
		{
			return ToolTip_Sprite.DEFAULT_MIN_HEIGHT;
		}
		/**
		 * 相对于包裹ui的背景框的边距宽度
		 */
		public function get marginWidth():int
		{
			return ToolTip_Sprite.DEFAULT_MARGIN_WIDTH;
		}
		/**
		 * 相对于包裹ui的背景框的边距高度
		 */
		public function get marginHeight():int
		{
			return ToolTip_Sprite.DEFAULT_MARGIN_HEIGHT;
		}
		
		public function set tipBg(value:Sprite):void
		{
		}
		
		public function get data():*
		{
			return this._data;
		}
	}
}